/*
 * @(#)AbstractData.java 1.0 2005-3-2
 * Copyright 2005 VandaGroup, Inc. All rights reserved.
 */
package com.vanda.data;

import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.sql.Timestamp;

import org.apache.commons.beanutils.PropertyUtils;

/**
 * DTO对象基类. <br>
 * DTO是数据的组织形式常用的一种设计模式. <br>
 * DTO为普通的Java Class，通常是服务器端数据的快照。 <br>
 * 由于网络传输的需要，DTO应该实现java.io.Serializable接口。 <br>
 * 
 * @author 蒋勇 <br>
 *         王瑛 <br>
 * @version Version 1.00 <br>
 *          Version 1.01 <br>
 */

public abstract class AbstractData implements Cloneable, Serializable {
	/** 主键 */
	private Long id;

	/** 时间戳 */
	private Timestamp versionID;

	/** 地区编码 */
	private String regionCode;

	/** 中心代码 */
	private String centreCode;

	/** POS 号 */
	private String posNum;

	/** 员工号 */
	private String staffNum;

	/** 旧系统中心代码 */
	private String oldCentreCode;

	/** 销售日期 */
	private Integer saleDate;

	/** 营业记录状态,默认Active */
	private String busRecStatus = "A";

	/** 报表记录状态,默认Active */
	private String repRecStatus = "A";

	/** 传送状态,默认c */
	private String transferStatus = "C";

	/** 主任授权id */
	private Long auditId;

	/**
	 * clone 克隆对象.
	 * <p>
	 * 通过实现Object的clone方法，对DTO对象实现克隆操作 <br>
	 * 
	 * @param 无
	 * @return Object 被克隆的对象
	 * @exception 无
	 */
	public Object clone() {
		try {
			return super.clone();
		} catch (CloneNotSupportedException cnse) {
			return null;
		}
	}

	/**
	 * @return
	 */
	public Long getId() {
		return id;
	}

	/**
	 * @return
	 */
	public Timestamp getVersionID() {
		return versionID;
	}

	/**
	 * @param l
	 */
	public void setId(Long l) {
		id = l;
	}

	/**
	 * @param l
	 */
	public void setVersionID(Timestamp l) {
		versionID = l;
	}

	/**
	 * @return
	 */
	public String getCentreCode() {
		return centreCode;
	}

	/**
	 * @return
	 */
	public String getOldCentreCode() {
		return oldCentreCode;
	}

	/**
	 * @return
	 */
	public String getPosNum() {
		return posNum;
	}

	/**
	 * @return
	 */
	public String getRegionCode() {
		return regionCode;
	}

	/**
	 * @return
	 */
	public String getStaffNum() {
		return staffNum;
	}

	/**
	 * @param string
	 */
	public void setCentreCode(String string) {
		centreCode = string;
	}

	/**
	 * @param string
	 */
	public void setOldCentreCode(String string) {
		oldCentreCode = string;
	}

	/**
	 * @param string
	 */
	public void setPosNum(String string) {
		posNum = string;
	}

	/**
	 * @param string
	 */
	public void setRegionCode(String string) {
		regionCode = string;
	}

	/**
	 * @param string
	 */
	public void setStaffNum(String string) {
		staffNum = string;
	}

	/**
	 * @return
	 */
	public String getBusRecStatus() {
		return busRecStatus;
	}

	/**
	 * @return
	 */
	public String getRepRecStatus() {
		return repRecStatus;
	}

	/**
	 * @return
	 */
	public String getTransferStatus() {
		return transferStatus;
	}

	/**
	 * @param string
	 */
	public void setBusRecStatus(String string) {
		busRecStatus = string;
	}

	/**
	 * @param string
	 */
	public void setRepRecStatus(String string) {
		repRecStatus = string;
	}

	/**
	 * @param string
	 */
	public void setTransferStatus(String string) {
		transferStatus = string;
	}

	/**
	 * @return
	 */
	public Integer getSaleDate() {
		return saleDate;
	}

	/**
	 * @param integer
	 */
	public void setSaleDate(Integer integer) {
		saleDate = integer;
	}

	/**
	 * @return
	 */
	public Long getAuditId() {
		return auditId;
	}

	/**
	 * @param long1
	 */
	public void setAuditId(Long long1) {
		auditId = long1;
	}

	public Object get(String p) {
		Object _rtn = null;
		try {
			_rtn = PropertyUtils.getProperty(this, p);
		} catch (IllegalAccessException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}
		return _rtn;

	}

}
